iT邦幫忙

2022 iThome 鐵人賽

DAY 12
1
自我挑戰組

經營資訊社群之雜談系列 第 12

宇宙秩序: 成員加入驗證(六之一)- Regex

  • 分享至 

  • xImage
  •  

前天有學長提到可以使用 regex 做電子信箱的「系所」與「學校」驗證,而我研究了一下,發現規則運算式比我之前短了許多,且不會遇到@csie.ntnu.edu.tw就無法驗證,也難以方便套用在其他學校的電子信箱。因此,今天補充介紹 如何透過 regex 做電子信箱的驗證。

regex 是什麼?

regex 是 regular expression(正規表示式)的簡稱,可以透過一個表示式字串來找到符合該規則的所有字串。

regex 網站

這次使用了兩個網站,分別是 regex101freeformatter

freeformatter

語法查詢,可以在一頁中看到常用的語法,以及他的介紹。這補足 regex101 語法查詢太多,還要點進去才看得到如何使用的問題。

regex101

給一個 regex ,這個網站可以解釋這個 regex 每一步在判斷甚麼(EXPLANATION)(圖一),以及可輸入測試字串(TEST STRING)(圖二)測試是否符合預期。
在這裡附上電子信箱驗證的 regex: (\d{3}47\d{3}s)(@.*ntnu\.edu\.tw),大家可以進入 regex101 丟這串進去,就可以在右邊看到每個部份在做什麼事了,所以這邊不細講。

https://ithelp.ithome.com.tw/upload/images/20220927/20152714sWfnOP7Oyi.jpg
圖一: (\d{3}47\d{3}s)(@.*ntnu\.edu\.tw) 的 EXPLANATION

https://ithelp.ithome.com.tw/upload/images/20220927/20152714aBOEyrmOMR.jpg
圖二: 測試字串,如果符合會有顏色標亮效果

如果和原本的公式合起來會從
=AND(EQ(J4,Q4), AND(EQ(MID(I4,4,2),"47"),OR(EQ(MID(I4,FIND("@",I4)+1,4),"ntnu"),EQ(MID(I4,FIND("@",I4)+7,4),"ntnu"))))
變成
=AND(EQ(J4,Q4),REGEXMATCH(I4,"(\d{3}47\d{3}s)(@.*ntnu\.edu\.tw)"))
看起來簡潔好懂多了!

這邊建議程設助教可以出一下 regex


上一篇
宇宙秩序: 成員加入驗證(六)
系列文
經營資訊社群之雜談12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言